package Week1.J0420;

// 未优化 超时未通过
// 忽视了 -'0' 和 +'0' 之间的区别 造导致了巨大的debug时间!
public class 大数乘法_xv {
    public String solve (String s, String t) {
        char[] cs = new StringBuffer(s).reverse().toString().toCharArray();
        char[] ct = new StringBuffer(t).reverse().toString().toCharArray();
        int csLen = cs.length;
        int ctLen = ct.length;
        int[] tmp = new int[csLen + ctLen];

        for (int i = 0; i < csLen; i++) {
            for (int j = 0; j < ctLen; j++) {
                tmp[i + j] += (cs[i] - '0') * (ct[j] - '0');
            }
        }

        StringBuffer ret = new StringBuffer();
        int rem = 0;
        for (int x : tmp) {
            rem += x;
            ret.append((char) (rem % 10 + '0'));
            rem /= 10;
        }

        // 最后最高位进位情况
        while (rem != 0) {
            ret.append((char) (rem % 10 + '0'));
            rem /= 10;
        }

        //前导 0 情况 (因为是逆序 最后一位为 0 就去除（除非只有一位）)
        while (ret.length() > 1 &&
                ret.charAt(ret.length()-1) == '0') {
            ret.deleteCharAt(ret.length() - 1);
        }
        return ret.reverse().toString();
    }
}
